#include <bits/stdc++.h>
using namespace std;
#define MAX (int)2e5 + 10
int n;
int capacity[MAX], root[MAX], litersIn[MAX];
int findRoot(int x) {
if(root[x] == x) {
return x;
}
return root[x] = findRoot(root[x]);
}
void _union(int u, int v) {
int pu = findRoot(u);
int pv = findRoot(v);
if(pu != pv) {
root[pu] = pv;
}
}
void addWater(int vessel, int litersToAdd) {
if(litersToAdd == 0 || vessel == n+1)
return;
int canBeAdded = min(capacity[vessel] - litersIn[vessel], litersToAdd);
litersIn[vessel] += canBeAdded;
if(litersIn[vessel] == capacity[vessel]) {
_union(vessel, vessel+1);
}
litersToAdd -= canBeAdded;
if(!litersToAdd) {
return;
}
addWater(findRoot(vessel), litersToAdd);
}
void reset() {
for(int i=1; i<=n+1; i++) {
root[i] = i;
litersIn[i] = 0;
}
}
int main() {
#ifndef ONLINE_JUDGE
freopen("/Users/mohtasin.m/Documents/Excercises/SWC/input.txt", "r", stdin);
freopen("/Users/mohtasin.m/Documents/Excercises/SWC/output.txt", "w", stdout);
#endif
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
while(cin>>n) {
reset();
for(int i=1; i<=n; i++) {
cin>>capacity[i];
}
int k;
cin>>k;
while(k--) {
int query, vessel;
cin>>query>>vessel;
if(query == 2) {
cout<<litersIn[vessel]<<endl;
continue;
}
int litersToAdd;
cin>>litersToAdd;
addWater(vessel, litersToAdd);
}
}
}
6. Zigzag Conversion | 1612B - Special Permutation |
1481. Least Number of Unique Integers after K Removals | 1035. Uncrossed Lines |
328. Odd Even Linked List | 1219. Path with Maximum Gold |
1268. Search Suggestions System | 841. Keys and Rooms |
152. Maximum Product Subarray | 337. House Robber III |
869. Reordered Power of 2 | 1593C - Save More Mice |
1217. Minimum Cost to Move Chips to The Same Position | 347. Top K Frequent Elements |
1503. Last Moment Before All Ants Fall Out of a Plank | 430. Flatten a Multilevel Doubly Linked List |
1290. Convert Binary Number in a Linked List to Integer | 1525. Number of Good Ways to Split a String |
72. Edit Distance | 563. Binary Tree Tilt |
1306. Jump Game III | 236. Lowest Common Ancestor of a Binary Tree |
790. Domino and Tromino Tiling | 878. Nth Magical Number |
2099. Find Subsequence of Length K With the Largest Sum | 1608A - Find Array |
416. Partition Equal Subset Sum | 1446. Consecutive Characters |
1618A - Polycarp and Sums of Subsequences | 1618B - Missing Bigram |